package br.com.iss.transporteCia.model;

import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import br.com.iss.transporteCia.view.SistemaPrincipal;

@Entity
@Table(name = "ROTA")
public class Rota {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "ROTA_ID", unique = true, nullable = false)
	private Long id;

	@ManyToOne
	@JoinColumn(name = "CIDADEORIGEM_ID")
	private Cidade cidadeOrigem;

	@ManyToOne
	@JoinColumn(name = "CIDADEDESTINO_ID")
	private Cidade cidadeDestino;

	@Column(name = "ROTA_KM", length = 150)
	private double km;

	@OneToMany(mappedBy="rota")
	private Set<Contrato> contratos;
	
	@OneToMany(mappedBy="rota")
	private Set<Frete> fretes;
	
	public Rota() {
		super();
	}

	public Rota(Cidade cidadeOrigem, Cidade cidadeDestino, double km) {
		this.cidadeOrigem = cidadeOrigem;
		this.cidadeDestino = cidadeDestino;
		this.km = km;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Cidade getCidadeOrigem() {
		return cidadeOrigem;
	}

	public void setCidadeOrigem(Cidade cidadeOrigem) {
		this.cidadeOrigem = cidadeOrigem;
	}

	public Cidade getCidadeDestino() {
		return cidadeDestino;
	}

	public void setCidadeDestino(Cidade cidadeDestino) {
		this.cidadeDestino = cidadeDestino;
	}

	public double getKm() {
		return km;
	}

	public void setKm(double km) {
		this.km = km;
	}

	public Set<Contrato> getContratos() {
		return contratos;
	}

	public void setContratos(Set<Contrato> contratos) {
		this.contratos = contratos;
	}

	public Set<Frete> getFretes() {
		return fretes;
	}

	public void setFretes(Set<Frete> fretes) {
		this.fretes = fretes;
	}
	
	@Override
    public String toString() {
        return this.getCidadeOrigem() + " para " + this.getCidadeDestino();
    }
	
	public void salvar() {
		if (this.getId() != null) {
			CrudUtil.atualizar(this);
		} else {
			CrudUtil.salvar(this);
		}
		SistemaPrincipal.getInstance().removeTela();
	}
}